package frontera;

import control.*;

import entidad.Proveedor;
import entidad.Transferencia;
import entidad.Lote;
import entidad.Producto;
import entidad.Usuario;
import java.awt.*;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.*;

public class VentanaPrincipal extends JFrame {
       
    private JPanel panel;
    
    public static ControlLote controlLote = new ControlLote();
    public static ControlPermiso controlPermiso = new ControlPermiso();
    public static ControlProducto controlProducto = new ControlProducto();
    public static ControlProveedor controlProveedor = new ControlProveedor();
    public static ControlTransferencia controlTransferencia = new ControlTransferencia();
    public static ControlUsuario controlUsuario = new ControlUsuario();
    
    public VentanaPrincipal(){
        super("SPI - Sistema de Inventarios");
        this.setIconImage((Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/resources/icono2.png"))));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        this.setMinimumSize(new Dimension(900, 600));
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frame  = this.getSize();
        this.setLocation(screen.width/2-frame.width/2, screen.height/2-frame.height/2);
        
        System.out.println("");
        System.out.println("");
        System.out.println("");
        
        Usuario nuevo = new Usuario("Administrador",1223629065l, "Usuario", "Contraseña","Administrador");
        nuevo.getPermisos().setConsultarProductos(true);
        nuevo.getPermisos().setConsultarProveedores(true);
        nuevo.getPermisos().setConsultarUsuarios(true);
        nuevo.getPermisos().setAgregarProveedores(true);
        nuevo.getPermisos().setAgregarUsuarios(true);
        nuevo.getPermisos().setAgregarProductos(true);
        nuevo.getPermisos().setEditarProveedores(true);
        nuevo.getPermisos().setEditarUsuarios(true);
        nuevo.getPermisos().setEditarProductos(true);
        nuevo.getPermisos().setEliminarProveedores(true);
        nuevo.getPermisos().setEliminarUsuarios(true);
        nuevo.getPermisos().setEliminarProductos(true);
        nuevo.getPermisos().setGenerarReportes(false);
        nuevo.getPermisos().setRealizarTransferencias(false);
        
        Usuario nuevo2 = new Usuario("Optimus",1223629064l, "osmond", "pomare","consultante");
        nuevo2.getPermisos().setConsultarProductos(true);
        nuevo2.getPermisos().setConsultarProveedores(true);
        nuevo2.getPermisos().setConsultarUsuarios(true);
        nuevo2.getPermisos().setAgregarProveedores(true);
        nuevo2.getPermisos().setAgregarUsuarios(true);
        nuevo2.getPermisos().setAgregarProductos(false);
        nuevo2.getPermisos().setGenerarReportes(true);
        nuevo2.getPermisos().setRealizarTransferencias(false);
        
        controlUsuario.agregar(nuevo);
        controlUsuario.agregar(nuevo2);
        
        Proveedor nuevo3 = new Proveedor("Colanta", 1111111111l, "Gonzalo", 9999999, 11111111111l, "Carrera 29 Z");
        controlProveedor.agregar(nuevo3);
        
        System.out.println("asdadsads");
        
        Lote nuevo4 = new Lote(2500, new Date(2014, 10, 12), 50);
        controlLote.agregar(nuevo4);
        
        ArrayList<Proveedor> provEX = new ArrayList<>();
        ArrayList<Lote> lotEX = new ArrayList<>();
        lotEX.add(nuevo4);
        provEX.add(nuevo3);
        Producto nuevo6 = new Producto(7700000000056l, "Leche", "Colanta", 50, provEX, lotEX);
        controlProducto.agregar(nuevo6);
        
//        Transferencia nuevo5 = new Transferencia(new Date(System.currentTimeMillis()), nuevo6, nuevo4, "Carga", 50);
//        controlTransferencia.realizarTransferencia(nuevo5);
        
        inicializacion();
    }
    
    public void inicializacion(){
        panel = new Login(this);
        this.add(panel);
        setVisible(true);
    }
    public void reinicializacion(){
        this.remove(panel);
        panel = new Login(this);
        this.add(panel);
        setVisible(true);
    }
    
    public void iniciarPanelPrincipal(){
        this.remove(panel);
        panel = new PanelPrincipal(this);
        this.add(panel);
        this.setVisible(true);
    }
    
    public static boolean esLong(String cad) {
        for (int i = 0; i < cad.length(); i++) {
            if (!Character.isDigit(cad.charAt(i))) {
                return false;
            }
        }
        return true;
    }
    
    public static void main(String[] args){
        try {
            javax.swing.UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceMarinerLookAndFeel");

            
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(VentanaPrincipal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                new VentanaPrincipal().setVisible(true);
            }
        });
    }
}
